Logging is an important tool to detect and analyze performance, security, and event correctness/consistency problems. Logging is beneficial because the application performing the process is not burdened with the resource demands of performing the analysis. Logging also allows independent and various software components to be used for post analysis without incorporating detailed knowledge of, and dependency on, the application system software.
For logging information to be useful for analysis, the application system typically needs to log events at reasonably fine granularity. To extract information from the resulting logs, the event information needs to be structured or semi-structured and reasonably complete so that the post processing software can extract information from the logs. Information within each process is normally represented in a binary format. Log information is generally stored in a string format to provide a complete description of an event. Converting information from a binary format to a textual format for logging purposes can incur significant overhead. Such requirements impose high overhead on the application system and can degrade application performance. What is needed is a space and time efficient representation of event logs that allows one to achieve frequent logging that can reconstruct complete information on system actions while incurring minimal overhead.